str = '''---------------------------------  字符串的驻留机制 ---------------------------------'''
print(str); # '''---------------------------------  字符串的驻留机制 ---------------------------------'''

# 1. 由上代码可见，字符串可有三种创建方式，'',"",'''''',或者说 大于等于一个'符号包裹的元素都是一个字符串
# 2. 相同的字符串，引用的其实是一块内存
# 3. 驻留机制不赘述

'''---------------------------------  查 ---------------------------------'''
str = '!HelloWord!';
# index() 查找并返回指定字符第一次在字符串中出现的未知，0开始 如果找不到 会抛出异常
print(str.index("!")); #0

# rindex() 查找并返回指定字符最后一次在字符串中出现的未知，0开始 如果找不到 会抛出异常
print(str.rindex("!")); #10

# find() 查找并返回指定字符第一次在字符串中出现的未知，0开始 如果找不到返回-1
print(str.find("!!")); #-1

# rfind() 查找并返回指定字符最后一次在字符串中出现的未知，0开始 如果找不到返回-1
print(str.rfind("!!")); #-1

'''---------------------------------  大小写操作 ---------------------------------'''
str = "Java,PHP,Python,Css,js";
# upper() 全部转大写，会产生新的字符串对象
print(str.upper()); #JAVA,PHP,PYTHON,CSS,JS

# lower() 全部转小写，会产生新的字符串对象
print(str.lower()); #java,php,python,css,js

str = "Java,PHP,Python,Css,js";
# swapcase() 大写转小写，小写转大写
print(str.swapcase()); #jAVA,php,pYTHON,cSS,JS

# capitalize() 第一个字符转成大写，其余小写
print(str.capitalize()); #Java,php,python,css,js

# title() 首字母大写
print(str.title()); #Java,Php,Python,Css,Js

'''---------------------------------  字符串对齐操作 ---------------------------------'''
str = "Java,PHP,Python,Css,js";
print(len(str)); #22个字符

# center(width,fill_text) 居中对齐，两个参数 width=宽度，fill_text=填充字符，小于len会返回原字符串，每个字算一个宽度，注意填充字符只能是一个字符
print(str.center(30,"-")); #----Java,PHP,Python,Css,js----

# ljust(width,fill_text) 左对齐，两个参数 width=宽度，fill_text=填充字符，小于len会返回原字符串，每个字算一个宽度，注意填充字符只能是一个字符
print(str.ljust(30,"-")); #Java,PHP,Python,Css,js--------

# rjust(width,fill_text) 右对齐，两个参数 width=宽度，fill_text=填充字符，小于len会返回原字符串，每个字算一个宽度，注意填充字符只能是一个字符
print(str.rjust(30,"-")); #--------Java,PHP,Python,Css,js

# zfill(width) 右对齐，一个个参数 width=宽度，小于len会返回原字符串，每个字算一个宽度，用0填充
print(str.zfill(30)); #00000000Java,PHP,Python,Css,js

'''---------------------------------  字符串分割操作 ---------------------------------'''
# split(sep,maxsplit) 分割字符串，默认使用空格 无参，参数1 sep="^" 根据^分割，参数2 maxsplit=1 最大分割次数，返回列表
str = "Java,PHP,Python,Css,js";
print(str.split()); #['Java,PHP,Python,Css,js']
print(str.split(sep=",")); #['Java', 'PHP', 'Python', 'Css', 'js']
print(str.split(sep=",",maxsplit=3)); #['Java', 'PHP', 'Python', 'Css,js']
# str.split(",",3) 等同于 str.split(sep=",",maxsplit=3)

# rsplit(sep,maxsplit) 由又至左分割字符串，默认使用空格 无参，参数1 sep="^" 根据^分割，参数2 maxsplit=1 最大分割次数，返回列表
str = "Java,PHP,Python,Css,js";
print(str.rsplit()); #['Java,PHP,Python,Css,js']
print(str.rsplit(sep=",")); #['Java', 'PHP', 'Python', 'Css', 'js']
print(str.rsplit(sep=",",maxsplit=3)); #['Java', 'PHP', 'Python', 'Css,js']
# str.rsplit(",",3) 等同于 str.rsplit(sep=",",maxsplit=3)

'''---------------------------------  字符串截取操作 ---------------------------------'''
str = '----------------------------------------------------------------------------';
print(len(str));
print(str[0:int(76/2)]);


'''---------------------------------  字符串判断操作 ---------------------------------'''
# 略

'''---------------------------------  字符串替换，连接操作 ---------------------------------'''
# replice(old_str,new_str,maxnum) 替换字符，新字符串，旧字符串，替换次数
str = "Hello,Python";
print(str.replace("Python","Java")); #Hello,Java

# join() 连接字符串，必须是元组或者是列表
arr = ["Word","Book","Hello"];
ran = ["Word","Book","Hello"];
str = "你好";
print(str.join(arr)); #Word你好Book你好Hello
print(str.join(ran)); #Word你好Book你好Hello
print(str.join("666")); #6你好6你好6，把字符串认定成一个列表了

'''---------------------------------  字符串比较操作 ---------------------------------'''
# <,<=,>,>=,==,!=
# 前四个比较的是字符串的对应码值
# 比较规则为从第一个字符串开始比较，如果相等比较下一个，直到不等位置，并返回比较结果
# ord() 根据字符返回一个码值
# chr() 根据码值返回一个字符
str1 = 'apple';
str1 = 'app';

print(ord("黑")); #40657
print(chr(110)); #n

'''---------------------------------  字符串格式化操作 ---------------------------------'''
# 第一种 % 占位符，%s = String  %i 或者 %d = Integer  %f = Float，固定连接符 % (params...),顺序对应
name = "大老黑";
age = 5;
print("我叫%s我今年%i岁了"%(name,age)); #我叫大老黑我今年5岁了

# 第二种 {}占位符，{0}{1}{...}.format(name,age),顺序对应
print("我叫{0}，我今年{1}岁了".format(name,age)); #我叫大老黑，我今年5岁了

# 第三种Python3以上才支持 f-string
print(f"我叫{name},我今年{age}岁了"); #我叫大老黑,我今年5岁了





